package com.ruoyi.cfuser.userCoupon.service.impl;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.ruoyi.common.redis.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cfuser.userCoupon.mapper.UserCouponMapper;
import com.ruoyi.cfuser.api.domain.UserCoupon;
import com.ruoyi.cfuser.userCoupon.service.IUserCouponService;

/**
 * 用户优惠券信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-02-26
 */
@Service
public class UserCouponServiceImpl implements IUserCouponService 
{
    @Autowired
    private UserCouponMapper userCouponMapper;

    @Autowired
    private RedisService redisService;

    @Override
    synchronized public boolean gainCoupon(Integer cfuserId, Integer couponId) {
        int num = Integer.parseInt(redisService.getCacheObject("coupon_num:" + couponId));
        if (num <= 0) {
            return false;
        }
        redisService.setCacheObject("coupon_num:" + couponId, --num);
        UserCoupon userCoupon = new UserCoupon();
        userCoupon.setUId(cfuserId);
        userCoupon.setCId(couponId);
        userCoupon.setNum(1L);

        Date now = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.add(Calendar.DAY_OF_MONTH, 30);
        Date endDate = calendar.getTime();
        userCoupon.setExpirationStart(now);
        userCoupon.setExpirationEnd(endDate);
        userCoupon.setStatus(0);
        insertUserCoupon(userCoupon);

        return true;
    }

    /**
     * 查询用户优惠券信息
     * 
     * @param id 用户优惠券信息主键
     * @return 用户优惠券信息
     */
    @Override
    public UserCoupon selectUserCouponById(Integer id)
    {
        return userCouponMapper.selectUserCouponById(id);
    }

    /**
     * 查询用户优惠券信息列表
     * 
     * @param userCoupon 用户优惠券信息
     * @return 用户优惠券信息
     */
    @Override
    public List<UserCoupon> selectUserCouponList(UserCoupon userCoupon)
    {
        return userCouponMapper.selectUserCouponList(userCoupon);
    }

    /**
     * 新增用户优惠券信息
     * 
     * @param userCoupon 用户优惠券信息
     * @return 结果
     */
    @Override
    public int insertUserCoupon(UserCoupon userCoupon)
    {
        return userCouponMapper.insertUserCoupon(userCoupon);
    }

    /**
     * 修改用户优惠券信息
     * 
     * @param userCoupon 用户优惠券信息
     * @return 结果
     */
    @Override
    public int updateUserCoupon(UserCoupon userCoupon)
    {
        return userCouponMapper.updateUserCoupon(userCoupon);
    }

    /**
     * 批量删除用户优惠券信息
     * 
     * @param ids 需要删除的用户优惠券信息主键
     * @return 结果
     */
    @Override
    public int deleteUserCouponByIds(Integer[] ids)
    {
        return userCouponMapper.deleteUserCouponByIds(ids);
    }

    /**
     * 删除用户优惠券信息信息
     * 
     * @param id 用户优惠券信息主键
     * @return 结果
     */
    @Override
    public int deleteUserCouponById(Integer id)
    {
        return userCouponMapper.deleteUserCouponById(id);
    }
}
